@echo off
chcp 65001
rem 探测某端口是否被占用，如果被占用，显示占用端口的进程名

echo 正在检测本机端口是否被占用...

setlocal enabledelayedexpansion

if not "%~1"=="" (
    set port=%1
) else (
    set /p port=请输入端口号：
)

for /f "tokens=5" %%a in ('netstat -a -n -o ^| findstr :%port%') do (
    set pid=%%a
)

if defined pid (
    for /f "tokens=2*" %%a in ('tasklist /fi "pid eq %pid%" ^| findstr %pid%') do (
        set "processName=%%b"
    )
    echo 端口 %port% 被进程 %processName% 使用
) else (
    echo 端口 %port% 没有被使用
)

endlocal
